package examenes.dao;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import utilitarios.MiConexion;

import examenes.bean.DetalleOE_ExamenDTO;
import examenes.bean.ExamenDTO;
import examenes.bean.OrdenExamenHcDTO;
import examenes.bean.OrdenExamenesDTO;
import examenes.interfaces.DetalleOrdenExamenDAO;

public class MySqlDetalleOrdenExamenDAO implements DetalleOrdenExamenDAO{

	@Override
	public void grabarDetalle(List<ExamenDTO> arrExamen, OrdenExamenesDTO oe) throws SQLException {
		// TODO Auto-generated method stub
		Connection conexion = MiConexion.obtenerConexion();
		CallableStatement call = null;
		for (ExamenDTO examenDTO : arrExamen) {
			call = conexion.prepareCall("{call usp_grabarDetalleOE(?,?,?,?)}");
			call.setString(1, oe.getStrNum_Oe());
			call.setString(2, examenDTO.getStrCod_Exa());
			call.setString(3, oe.getUsuario());
			call.setString(4, oe.getTip_ope());
			call.executeQuery();
		}
		call.close();
		conexion.close();
	}

	@Override
	public List<DetalleOE_ExamenDTO> listadoDetallerOE(OrdenExamenHcDTO objOeHc) throws SQLException {
		// TODO Auto-generated method stub
		List<DetalleOE_ExamenDTO> listaDetalleOE = new ArrayList<DetalleOE_ExamenDTO>();
		Connection cn = MiConexion.obtenerConexion();
	
			String sql	=	"select r.res_exa,r.cod_exa,t.cod_tipo_exa from detalle_ordenexamen r inner join examen e on r.cod_exa=e.cod_exa inner join tipo_de_examen t on e.cod_tipo_exa=t.cod_tipo_exa  where r.num_oe=?";
			PreparedStatement pstm = cn.prepareStatement(sql);
			pstm.setString(1, objOeHc.getStrNroOE());
			ResultSet rs = pstm.executeQuery();
			while (rs.next()) {
				DetalleOE_ExamenDTO objDetalleOE = new DetalleOE_ExamenDTO();
				objDetalleOE.setStrRes_Exa(rs.getString(1));
				objDetalleOE.setStrCod_Exa(rs.getString(2));
				objDetalleOE.setStrTip_Cod_Exa(rs.getString(3));
				listaDetalleOE.add(objDetalleOE);
			}
			rs.close();
			pstm.close();
			cn.close();
	
		return listaDetalleOE;
	}

	@Override
	public void registraRe(List<DetalleOE_ExamenDTO> detalleOE, String strNumOe) throws SQLException {
		// TODO Auto-generated method stub
		Connection cn = MiConexion.obtenerConexion();
		String sql	=	"update detalle_ordenexamen set res_exa=? where num_oe=? and cod_exa=?";
		PreparedStatement pstm=null;
		for (int i = 0; i < detalleOE.size(); i++) {
			pstm = cn.prepareStatement(sql);
			pstm.setString(1, detalleOE.get(i).getStrRes_Exa());
			pstm.setString(2, strNumOe);
			pstm.setString(3, detalleOE.get(i).getStrCod_Exa());
			pstm.executeUpdate();
		}
		pstm.close();
		cn.close();
	}

}
